Telegram Group & Telegram Channel
🆒 5 трюков Jetpack Compose

1️⃣ Используйте rememberUpdatedState, чтобы избежать устаревших лямбд

Если вы передаете в Composable лямбду, которая может измениться, rememberUpdatedState гарантирует, что вы используете последнюю версию.

val updatedOnClick by rememberUpdatedState(newValue = onClick)
LaunchedEffect(Unit) {
delay(1000)
updatedOnClick()
}


Без этого Compose может вызвать старую версию лямбды, что приведет к ошибкам.

2️⃣ Не забывайте о pointerInput для кастомных жестов

Выйдете за пределы clickable — используйте перетаскивание, мультитач или собственное распознавание сложных жестов.

Modifier.pointerInput(Unit) {
detectTapGestures(
onLongPress = { /* do something */ }
)
}


Можно также обнаружить масштабирование с помощью щипков, смахивание или реализовать распознавание кастомных жестов.

3️⃣ Прокручивайте любой компонент с помощью Modifier.scrollable

Хотите прокрутить бокс или кастомный макет? Вам не нужно использовать LazyColumn или Column.

val scrollState = rememberScrollState()
Box(
Modifier
.height(200.dp)
.verticalScroll(scrollState)
) {
// Large content goes here
}


Также работает с горизонтальными прокрутками или вложенными скролами с помощью NestedScrollConnection.

4️⃣ Используйте CompositionLocal для тематического поведения

Вместо глубокой передачи параметров используйте CompositionLocal для обмена такими значениями, как интервал или предпочтения пользователя.

val LocalSpacing = compositionLocalOf { 0.dp }
CompositionLocalProvider(LocalSpacing provides 8.dp) {
MyComposable()
}
@Composable
fun MyComposable() {
val spacing = LocalSpacing.current
Spacer(modifier = Modifier.height(spacing))
}


Идеально подходит для согласования таких элементов дизайна, как интервалы, цвета или размеры шрифтов в больших кодовых базах.

5️⃣ Используйте Modifier.graphicsLayer для создания эффектов

graphicsLayer предоставляет вам низкоуровневый контроль для применения таких эффектов, как вращение, масштабирование или альфа-канал, прямо на GPU.

Modifier.graphicsLayer {
rotationZ = 15f
scaleX = 1.2f
alpha = 0.8f
}


Используйте с осторожностью: эти эффекты хорошо работают на графических процессорах, но проверяйте производительность на устройствах более низкого класса.

Делитесь в комментариях лайфхаками, которыми вы пользуетесь 💬

🐸 Библиотека мобильного разработчика

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM



tg-me.com/mobileproglib/5921
Create:
Last Update:

🆒 5 трюков Jetpack Compose

1️⃣ Используйте rememberUpdatedState, чтобы избежать устаревших лямбд

Если вы передаете в Composable лямбду, которая может измениться, rememberUpdatedState гарантирует, что вы используете последнюю версию.

val updatedOnClick by rememberUpdatedState(newValue = onClick)
LaunchedEffect(Unit) {
delay(1000)
updatedOnClick()
}


Без этого Compose может вызвать старую версию лямбды, что приведет к ошибкам.

2️⃣ Не забывайте о pointerInput для кастомных жестов

Выйдете за пределы clickable — используйте перетаскивание, мультитач или собственное распознавание сложных жестов.

Modifier.pointerInput(Unit) {
detectTapGestures(
onLongPress = { /* do something */ }
)
}


Можно также обнаружить масштабирование с помощью щипков, смахивание или реализовать распознавание кастомных жестов.

3️⃣ Прокручивайте любой компонент с помощью Modifier.scrollable

Хотите прокрутить бокс или кастомный макет? Вам не нужно использовать LazyColumn или Column.

val scrollState = rememberScrollState()
Box(
Modifier
.height(200.dp)
.verticalScroll(scrollState)
) {
// Large content goes here
}


Также работает с горизонтальными прокрутками или вложенными скролами с помощью NestedScrollConnection.

4️⃣ Используйте CompositionLocal для тематического поведения

Вместо глубокой передачи параметров используйте CompositionLocal для обмена такими значениями, как интервал или предпочтения пользователя.

val LocalSpacing = compositionLocalOf { 0.dp }
CompositionLocalProvider(LocalSpacing provides 8.dp) {
MyComposable()
}
@Composable
fun MyComposable() {
val spacing = LocalSpacing.current
Spacer(modifier = Modifier.height(spacing))
}


Идеально подходит для согласования таких элементов дизайна, как интервалы, цвета или размеры шрифтов в больших кодовых базах.

5️⃣ Используйте Modifier.graphicsLayer для создания эффектов

graphicsLayer предоставляет вам низкоуровневый контроль для применения таких эффектов, как вращение, масштабирование или альфа-канал, прямо на GPU.

Modifier.graphicsLayer {
rotationZ = 15f
scaleX = 1.2f
alpha = 0.8f
}


Используйте с осторожностью: эти эффекты хорошо работают на графических процессорах, но проверяйте производительность на устройствах более низкого класса.

Делитесь в комментариях лайфхаками, которыми вы пользуетесь 💬

🐸 Библиотека мобильного разработчика

#буст

BY Библиотека мобильного разработчика | Android, iOS, Swift, Retrofit, Moshi, Chuck


Warning: Undefined variable $i in /var/www/tg-me/post.php on line 283

Share with your friend now:
tg-me.com/mobileproglib/5921

View MORE
Open in Telegram


Библиотека мобильного разработчика | Android iOS Swift Retrofit Moshi Chuck Telegram | DID YOU KNOW?

Date: |

Tata Power whose core business is to generate, transmit and distribute electricity has made no money to investors in the last one decade. That is a big blunder considering it is one of the largest power generation companies in the country. One of the reasons is the company's huge debt levels which stood at ₹43,559 crore at the end of March 2021 compared to the company’s market capitalisation of ₹44,447 crore.

Launched in 2013, Telegram allows users to broadcast messages to a following via “channels”, or create public and private groups that are simple for others to access. Users can also send and receive large data files, including text and zip files, directly via the app.The platform said it has more than 500m active users, and topped 1bn downloads in August, according to data from SensorTower.Библиотека мобильного разработчика | Android iOS Swift Retrofit Moshi Chuck from us


Telegram Библиотека мобильного разработчика | Android, iOS, Swift, Retrofit, Moshi, Chuck
FROM USA